package com.atguigu.gmall.cart.service;

import com.atguigu.gmall.cart.entity.CartInfo;
import com.atguigu.gmall.product.entity.SkuInfo;

import java.util.List;

/**
* @author 10574
* @description 针对表【cart_info(购物车表 用户登录系统时更新冗余)】的数据库操作Service
* @createDate 2022-12-16 09:36:12
*/
public interface CartInfoService {

    /**
     * 决定要操作哪个购物车
     * @return
     */
    String determinCartKey();

    /**
     * 把商品添加到购物车
     * @param skuId    添加的商品
     * @param num      添加的数量
     * @param cartKey  指定购物车
     * @return
     */
    SkuInfo addToCart(Long skuId, Integer num, String cartKey);

    /**
     * 从购物车查询商品
     * @param cartKey
     * @param skuId
     * @return
     */
    CartInfo getItem(String cartKey,Long skuId);

    /**
     * 保存一个商品
     * @param cartKey
     * @param cartInfo
     */
    void saveItem(String cartKey,CartInfo cartInfo);

    /**
     * 查询购物车列表
     * @param cartKey
     * @return
     */
    List<CartInfo> cartList(String cartKey);

    /**
     * 修改购物车商品数量
     * @param cartKey
     * @param skuId
     * @param num
     */
    void updateItemNum(String cartKey, Long skuId, Integer num);

    /**
     * 修改是否选择状态
     * @param cartKey
     * @param skuId
     * @param check
     */
    void updateIsCheck(String cartKey, Long skuId, Integer check);

    /**
     * 删除单个购物车商品
     * @param cartKey
     * @param skuId
     */
    void deleteCart(String cartKey, Long skuId);

    /**
     * 删除购物车选中的商品
     * @param cartKey
     */
    void deleteChecked(String cartKey);

    /**
     * 合并购物车数据展示列表
     * @return
     */
    List<CartInfo> displayCarts();

    /**
     * 获取选中的商品
     * @param cartKey
     * @return
     */
    List<CartInfo> getCheckeds(String cartKey);

}
